package com.cmict.data.infra.service.source;

import java.util.*;
import javax.validation.*;
import com.cmict.data.infra.controller.admin.source.vo.*;
import com.cmict.data.infra.dal.dataobject.source.SourceDO;
import com.cmict.data.framework.common.pojo.PageResult;

/**
 * 数据源 Service 接口
 *
 * @author awesome1114
 */
public interface SourceService {

    /**
     * 创建数据源
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSource(@Valid SourceCreateReqVO createReqVO);

    /**
     * 更新数据源
     *
     * @param updateReqVO 更新信息
     */
    void updateSource(@Valid SourceUpdateReqVO updateReqVO);

    /**
     * 删除数据源
     *
     * @param id 编号
     */
    void deleteSource(Long id);

    /**
     * 获得数据源
     *
     * @param id 编号
     * @return 数据源
     */
    SourceDO getSource(Long id);

    /**
     * 获得数据源列表
     *
     * @param ids 编号
     * @return 数据源列表
     */
    List<SourceDO> getSourceList(Collection<Long> ids);

    /**
     * 获得数据源分页
     *
     * @param pageReqVO 分页查询
     * @return 数据源分页
     */
    PageResult<SourceRespVO> getSourcePage(SourcePageReqVO pageReqVO);

    /**
     * 获得数据源列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 数据源列表
     */
    List<SourceDO> getSourceList(SourceExportReqVO exportReqVO);

    /**
     * 获得数据源列表, 用于 下拉框等选择
     *
     * @return 数据源列表
     */
    List<SourceDO> getSourceList();

    void batchDeleteSource(Collection<Long> ids);

    List<SourceDO> getListchooseByExcludeId(Long excludeId);
}
